package ScalaStudy.chapter05

object Test07_Practice_CollectionOperation {
  def main(args: Array[String]): Unit = {

    /////////////////////////////////////////////////////////////////////////////////////////
    ///////////////////////////////////////   函数应用   /////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////////////

    //对数组进行处理，将操作抽象出来，处理之后的结果返回新的数组, 这里对所有元素加2输出
println("(1)")

    val arr: Array[Int] = Array(1,2,3,4,5)                                        //定义数组

    def arrayOperation(array: Array[Int], op: Int => Int): Array[Int] = {         //定义高阶函数，参数有数组和函数
      for (elem <- array) yield op(elem)
    }

    def addone(elem: Int): Int = {                                                //定义一个加1函数
      elem + 1
    }

    println(arrayOperation(arr, addone))                                          //调用函数,但是看不到
    println(arrayOperation(arr, addone).mkString(","))                            //调用函数,使用数组的mkString方法，用,号分割

    //传入匿名函数，实现元素翻倍
println("(2)")

    val newarray: Array[Int] = arrayOperation(arr, _ * 2)
    println(newarray.mkString(","))

  }
}
